//
//  MCNetTool.h
//  zxc
//
//  Created by 李李善 on 2018/2/7.
//  Copyright © 2018年 李李善. All rights reserved.
//

#import <AFNetworking/AFNetworking.h>


#define SAFE_BLOCK_CALL(b,p)        (b==nil?:b(p))
#define SAFE_BLOCK_CALL_VOID(b)     (b==nil?:b())
//返回格式
typedef NS_OPTIONS(NSUInteger, WZXResponseType){
    kWZXResponseTypeJSON = 1, // JSON
    kWZXResponseTypeXML  = 2, // xml(二进制格式)
    // 特殊情况，一转换服务器就无法识别的，默认会尝试装换成JSON，若识别则需要自己去转换
    kWZXResponseTypeData = 3
    
};
//请求格式
typedef NS_OPTIONS(NSUInteger, WZXRequestType){
    kWZXRequestTypeJSON = 1, // 默认(JSON)
    kWZXRequestTypePlainText = 2, // text/html(二进制格式)
    kWZXRequestTypePropertyList = 3 //PList(是一种特殊的XML,解析起来相对容易)
};


/*枚举里面四个状态  分别对应 未知 无网络 数据 WiFi
 typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
 AFNetworkReachabilityStatusUnknown          = -1,      未知
 AFNetworkReachabilityStatusNotReachable     = 0,       无网络
 AFNetworkReachabilityStatusReachableViaWWAN = 1,       蜂窝数据网络
 AFNetworkReachabilityStatusReachableViaWiFi = 2,       WiFi
 };
 */

/*
 *
 *  上传进度
 *
 *  @param bytesWritten              已上传的大小
 *  @param totalBytesWritten         总上传大小
 */
typedef void (^MCUploadProgress)(int64_t bytesWritten,
int64_t totalBytesWritten);
/*!
 *  下载进度
 *
 *  @param bytesRead                 已下载的大小
 *  @param totalBytesRead            文件总大小
 */
typedef void (^MCDownloadProgress)(int64_t bytesRead,
int64_t totalBytesRead);


///引擎
#define NETTOOL (MCNetTool*)[MCNetTool sharedNetworkTool]
@interface MCNetTool : AFHTTPSessionManager
+ (instancetype)sharedTool;
/**< 响应方式 >**/
@property(nonatomic,assign )WZXResponseType responseType;
/**< 请求方式 >**/
@property(nonatomic,assign )WZXRequestType  requestType;
/**< 请求超时时间，默认60秒 >**/
@property (nonatomic, assign)NSTimeInterval timeout;

@end
